package 堆;

import java.util.Comparator;
import java.util.PriorityQueue;

/**
 * https://leetcode-cn.com/problems/kth-largest-element-in-an-array/
 * 给定整数数组 nums 和整数 k，请返回数组中第 k 个最大的元素。
 *
 * 请注意，你需要找的是数组排序后的第 k 个最大的元素，而不是第 k 个不同的元素。
 */
public class _215_数组中的第K个最大元素 {
    private static PriorityQueue<Integer> heap = new PriorityQueue<>(new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o1 - o2;
        }
    });
    public static int findKthLargest(int[] nums, int k) {
        if(nums == null || nums.length == 0) return 0;

        for (int num : nums) {
            if(heap.size()<k){
                heap.add(num);
            }else if(heap.peek()<num){
                heap.remove();
                heap.add(num);
            }
        }
        return heap.peek();
    }


    public static void main(String[] args) {
        int[] array = {-1,2,0};
        int res = findKthLargest(array,2);
        System.out.println(res);
    }
}
